package com.dayang.framework.biz.limiter.aspect;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * @author: dayang
 * @since: 2024/6/14
 * @description:
 */

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface GuavaLimiter {
    /**
     * 每秒生成的令牌数
     */
    double permitsPerSecond();

    /**
     * 一次获取多少个令牌
     */
    int permits() default 1;

    /**
     * 获取令牌的最大等待时间
     */
    long timeout();

    /**
     * 获取令牌最大等待时间的单位，这里默认是毫秒
     */
    TimeUnit timeUnit() default TimeUnit.MILLISECONDS;
}
